<?php
//дата, подставляемая к файлам, чтобы они обновлялись автоматически
$dates_of_files = array(
    'main.js' => '?20210616_1700',
    'main.css' => '?20210616_1300'
);

$LOCALE_SETS = [
    'RU' => [
        'sitename' => 'RPG Roll-a-die',
        'meta_description' => 'Дайсроллер (diceroller) для ролевых игр',
        'meta_keywords' => 'ролевые игры, кубик, бросок, d20, d10, fate dice, vtm',
        'favourites' => 'Избранное',
        'history' => 'История',
        'locale_switcher' => 'EN',
        'pwa' => array(
            'already_installed' => 'Уже установлено? <a class="PWAsuccess">Перейти</a>.',
            'success_btn' => 'Перейти в приложение',
            'description' => 'Установите Roll-a-die в виде приложения: еще быстрее, еще удобнее.',
            'android' => array(
                'install' => 'Установить',
            ),
            'ios' => array(
                'install' => 'Для установки нажмите на <span></span> и выберите «На экран «Домой»'
            ),
            'undefined' => array(
                'help' => '<ul><li><b>iOS</b>: переключитесь на обновленный браузер Safari.</li><li><b>Иначе</b>: воспользуйтесь обновленными браузерами Chrome или Firefox.</li></ul>',
            )
        ),
        'favourites_empty' => 'Здесь появятся все броски, которые Вы пометите, как избранные. Тапните для броска.',
        'history_empty' => 'Здесь появятся все результаты сделанных бросков. Тапните для повторного броска.',
        'roll' => 'Бросить',
        'to_fav_name' => 'Введите название',
    ],
    'EN' => [
        'sitename' => 'RPG Roll-a-die',
        'meta_description' => 'Diceroller for RPG games',
        'meta_keywords' => 'rpg, die, dice, roll, d20, d10, fate dice, vtm',
        'favourites' => 'Favorites',
        'history' => 'History',
        'locale_switcher' => 'RU',
        'pwa' => array(
            'already_installed' => 'Already installed? <a class="PWAsuccess">Switch</a>.',
            'success_btn' => 'Switch to the app',
            'description' => 'We recommend to install Roll-a-die app. Even faster, even more comfortable.',
            'android' => array(
                'install' => 'Install',
            ),
            'ios' => array(
                'install' => 'Tap <span></span> and then «Add to homescreen» to install'
            ),
            'undefined' => array(
                'help' => '<ul><li>iOS: please, switch to an updated Safari browser.</li><li>Otherwise: please, use a Chrome or a Firefox updated browser.</li></ul>',
            )
        ),
        'favourites_empty' => 'Here you will see all rolls that you will mark as favorites. Tap to roll.',
        'history_empty' => 'Here you will see all previous rolls and results. Tap to reroll.',
        'roll' => 'Roll',
        'to_fav_name' => 'Input name',
    ]
];

# Базовые настройки
ini_set("log_errors", 1);
ini_set("display_errors", false);
ini_set("memory_limit", "500M");
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Moscow');
set_time_limit(60);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_RECOVERABLE_ERROR);

$GET_LOCALE = 'EN';
if (encode($_GET['locale']) != '') {
    $GET_LOCALE = mb_strtoupper(encode($_GET['locale']), 'utf8');
}
if (isset($LOCALE_SETS[$GET_LOCALE])) {
    $LOCALE = $LOCALE_SETS[$GET_LOCALE];
} else {
    $LOCALE = $LOCALE_SETS["EN"];
    $GET_LOCALE = 'EN';
}

$content = '<!doctype html>
<html prefix="og: http://ogp.me/ns#" lang="ru">
<head>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="Description" Content="' . $LOCALE['meta_description'] . '">
<meta name="Keywords" Content="' . $LOCALE['meta_keywords'] . '">

<meta property="og:title" content="' . $LOCALE['sitename'] . '" />
<meta property="og:description" content="' . $LOCALE['meta_description'] . '" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '" />
<meta property="og:site" content="' . $LOCALE['sitename'] . '" />
<meta property="vk:image" content="/design/social_network_logo.png" />
<meta property="og:image" content="/design/social_network_logo_box.png" />

<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:site" content="' . $LOCALE['sitename'] . '" />
<meta property="twitter:title" content="' . $LOCALE['sitename'] . '" />
<meta property="twitter:image" content="/design/social_network_logo.png" />
<meta property="twitter:url" content="https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '" />

<title>' . $LOCALE['sitename'] . '</title>

<script type="text/javascript" src="/main.js' . $dates_of_files['main.js'] . '"></script>
<link rel="stylesheet" type="text/css" href="/design/main.css' . $dates_of_files['main.css'] . '">

<meta name="theme-color" content="#ffffff">
<link rel="icon" href="/design/favicons/favicon.svg">
<link rel="mask-icon" href="/design/favicons/apple-mask-icon.svg" color="#55739C">
<link rel="apple-touch-icon" href="/design/favicons/apple-touch-icon-180x180.png">
<link rel="manifest" href="/design/favicons/manifest.json">
<script type="text/javascript" src="/pwacompat.min.js"></script>
</head>

<body id="rolladie">
<div id="fullpage">
<div id="diceroller">
<div id="header">
<div id="logo"><img src="/design/favicons/favicon.svg"></div>
<div id="favourites">' . $LOCALE['favourites'] . '</div>
<div id="history">' . $LOCALE['history'] . '</div>
<div id="locale_switcher"><a href="/' . ($LOCALE['locale_switcher'] != 'EN' ? $LOCALE['locale_switcher'] . '/' : '') . '">' . $LOCALE['locale_switcher'] . '</a></div>
<div id="allrpg_logo"><a href="https://www.allrpg.info"><img src="/design/allrpg_logo.svg"></a></div>
</div>
<div id="content">
    <div id="rollResults_fullpage_cover"></div>
    <div id="rollResults">
        <div id="rollResults_total"></div>
        <div id="rollResults_details"><div id="rollResults_details_roll"></div><div id="rollResults_details_separator"></div><div id="rollResults_details_results"></div></div>
    </div>
    <div id="calculator_tab" class="shown">
        <div id="calculator_formula_window">
            <div id="cfw_main">
                <div id="cfw_formula"><span></span></div>
                <div id="cfw_delete" class="inactive"></div>
            </div>
            <div id="cfw_text"><span></span></div>
        </div>
        <div id="calculator_buttons">
            <div id="cb_ds_block">
                <div id="cb_ds_block_1">
                    <div id="cb_ds_n" class="cb_ds" data-sides="n">d…</div>
                    <div id="cb_ds_100" class="cb_ds" data-sides="100">d100</div>
                    <div id="cb_ds_20" class="cb_ds" data-sides="20">d20</div>
                    <div id="cb_ds_12" class="cb_ds" data-sides="12">d12</div>
                    <div id="cb_ds_10" class="cb_ds" data-sides="10">d10</div>
                </div>
                <div id="cb_ds_block_2">
                    <div id="cb_ds_8" class="cb_ds" data-sides="8">d8</div>
                    <div id="cb_ds_6" class="cb_ds" data-sides="6">d6</div>
                    <div id="cb_ds_4" class="cb_ds" data-sides="4">d4</div>
                    <div id="cb_ds_3" class="cb_ds" data-sides="3">d3</div>
                    <div id="cb_ds_2" class="cb_ds" data-sides="2">d2</div>
                    <div id="cb_ds_f" class="cb_ds" data-sides="F">dF</div>
                </div>
            </div>
            <div id="cb_f_block">
                <div id="cb_f_1" class="cb_f_int" data-val="1">1</div>
                <div id="cb_f_2" class="cb_f_int" data-val="2">2</div>
                <div id="cb_f_3" class="cb_f_int" data-val="3">3</div>
                <div id="cb_f_4" class="cb_f_int" data-val="4">4</div>
                <div id="cb_f_5" class="cb_f_int" data-val="5">5</div>
                <div id="cb_f_6" class="cb_f_int" data-val="6">6</div>
                
                <div id="cb_f_7" class="cb_f_int" data-val="7">7</div>
                <div id="cb_f_8" class="cb_f_int" data-val="8">8</div>
                <div id="cb_f_9" class="cb_f_int" data-val="9">9</div>
                <div id="cb_f_0" class="cb_f_int inactive" data-val="0">0</div>
                <div id="cb_f_minus" class="cb_f_f inactive" data-formula="-">-</div>
                <div id="cb_f_plus" class="cb_f_f inactive" data-formula="+">+</div>
                
                <div id="cb_f_keep_highest" class="cb_f_f inactive" data-formula="K">K</div>
                <div id="cb_f_drop_highest" class="cb_f_f inactive" data-formula="X">X</div>
                <div id="cb_f_reroll_always" class="cb_f_f inactive" data-formula="R">R</div>
                <div id="cb_f_explode_max" class="cb_f_f inactive" data-formula="!">!</div>
                <div id="cb_f_less" class="cb_f_f inactive" data-formula="less">&#8804;</div>
                <div id="cb_f_more" class="cb_f_f inactive" data-formula="more">&#8805;</div>
                
                <div id="cb_f_keep_lowest" class="cb_f_f inactive" data-formula="k">k</div>
                <div id="cb_f_drop_lowest" class="cb_f_f inactive" data-formula="x">x</div>
                <div id="cb_f_reroll_once" class="cb_f_f inactive" data-formula="r">r</div>
                <div id="cb_f_compound_max" class="cb_f_f inactive" data-formula="!!">!!</div>
                <div id="cb_f_explode_max_with_minus_one" class="cb_f_f inactive" data-formula="!p">!p</div>
                <div id="cb_f_substract_failures" class="cb_f_f inactive" data-formula="f">f</div>
            </div>
        </div>
        <div id="footer" class="inactive">
            <div id="clear"></div>
            <div id="roll">
            <span class="shown">' . $LOCALE['roll'] . '</span>
            <input type="text" id="to_fav_name" placeholder="' . $LOCALE['to_fav_name'] . '">
            </div>
            <div id="to_favourites"></div>
        </div>
    </div>
    <div id="favourites_tab">
        <div class="empty">
        ' . $LOCALE['favourites_empty'] . '
        </div>
    </div>
    <div id="history_tab">
        <div class="empty">
        ' . $LOCALE['history_empty'] . '
        </div>
    </div>
</div>
</div>
<div class="PWAinfo">
    <div class="android">
        <div class="PWAdescription">' . $LOCALE['pwa']['description'] . '</div>
        <div class="installPWA">' . $LOCALE['pwa']['android']['install'] . '</div>
        <div class="PWAsuccess">' . $LOCALE['pwa']['success_btn'] . '</div>
    </div>
    <div class="ios">
        <div class="PWAdescription">' . $LOCALE['pwa']['description'] . '</div>
        <div class="installPWA">' . $LOCALE['pwa']['ios']['install'] . '</div>
        <div class="PWAdescription">' . $LOCALE['pwa']['already_installed'] . '</div>
    </div>
    <div class="undefined shown">
        <div class="PWAdescription">' . $LOCALE['pwa']['description'] . '</div>
        <div class="installPWA">' . $LOCALE['pwa']['undefined']['help'] . '</div>
        <div class="PWAdescription">' . $LOCALE['pwa']['already_installed'] . '</div>
    </div>
</div>
</div>
<script>
    var loc="' . $GET_LOCALE . '";
</script>
</body>
</html>';

echo($content);

//вычистка и шифровка в безопасный формат поступающих переменных
function encode($str)
{
    if (is_array($str)) {
        return $str;
    }

    $str = str_replace('&gt;', '>', $str);
    $str = str_replace('&lt;', '<', $str);
    $str = preg_replace('/<\s*\/?[a-z0-9]+(\s*[a-z\-0-9]+)*(\s*[a-z\-0-9]+\="[^"]*")*\s*\/?>/ims', '', $str);

    $str = str_replace('[', '&open;', $str);
    $str = str_replace(']', '&close;', $str);
    $str = str_replace("\\'", '&#39', $str);
    $str = str_replace("'", '&#39', $str);
    $str = str_replace('\\"', '&quot;', $str);
    $str = str_replace('"', '&quot;', $str);
    $str = str_replace('<br>', '&br;', $str);
    $str = str_replace("\r\n", '<br>', $str);
    $str = str_replace("\n", '<br>', $str);
    $str = str_replace('>', '&gt;', $str);
    $str = str_replace('<', '&lt;', $str);

    return $str;
}